#ifndef _DevicesPower_H_
#define _DevicesPower_H_


#define POWER_CHANNEL_VCC1  0x01
#define POWER_CHANNEL_VCC2H 0x02
#define POWER_CHANNEL_VCC2L 0x04
#define POWER_CHANNEL_VCCQ  0x08
#define POWER_CHANNEL_COM   0x80
#define POWER_CHANNEL_ALL   0xFF


#define POWER_COM_GPIO_Port     GPIOD
#define POWER_COM_GPIO_Pin      GPIO_PIN_9

#define POWER_VCC1_GPIO_Port    GPIOD
#define POWER_VCC1_GPIO_Pin     GPIO_PIN_10

#define POWER_VCC2H_GPIO_Port   GPIOD
#define POWER_VCC2H_GPIO_Pin    GPIO_PIN_11

#define POWER_VCC2L_GPIO_Port   GPIOD
#define POWER_VCC2L_GPIO_Pin    GPIO_PIN_12

#define POWER_VCCQ_GPIO_Port    GPIOD
#define POWER_VCCQ_GPIO_Pin     GPIO_PIN_13


#define POWER_COM_ENABLE()      HAL_GPIO_WritePin(POWER_COM_GPIO_Port, POWER_COM_GPIO_Pin, GPIO_PIN_SET)
#define POWER_COM_DISABLE()     HAL_GPIO_WritePin(POWER_COM_GPIO_Port, POWER_COM_GPIO_Pin, GPIO_PIN_RESET)

#define POWER_VCC1_ENABLE()     HAL_GPIO_WritePin(POWER_VCC1_GPIO_Port, POWER_VCC1_GPIO_Pin, GPIO_PIN_SET)
#define POWER_VCC1_DISABLE()    HAL_GPIO_WritePin(POWER_VCC1_GPIO_Port, POWER_VCC1_GPIO_Pin, GPIO_PIN_RESET)

#define POWER_VCC2H_ENABLE()    HAL_GPIO_WritePin(POWER_VCC2H_GPIO_Port, POWER_VCC2H_GPIO_Pin, GPIO_PIN_SET)
#define POWER_VCC2H_DISABLE()   HAL_GPIO_WritePin(POWER_VCC2H_GPIO_Port, POWER_VCC2H_GPIO_Pin, GPIO_PIN_RESET)

#define POWER_VCC2L_ENABLE()    HAL_GPIO_WritePin(POWER_VCC2L_GPIO_Port, POWER_VCC2L_GPIO_Pin, GPIO_PIN_SET)
#define POWER_VCC2L_DISABLE()   HAL_GPIO_WritePin(POWER_VCC2L_GPIO_Port, POWER_VCC2L_GPIO_Pin, GPIO_PIN_RESET)

#define POWER_VCCQ_ENABLE()     HAL_GPIO_WritePin(POWER_VCCQ_GPIO_Port, POWER_VCCQ_GPIO_Pin, GPIO_PIN_SET)
#define POWER_VCCQ_DISABLE()    HAL_GPIO_WritePin(POWER_VCCQ_GPIO_Port, POWER_VCCQ_GPIO_Pin, GPIO_PIN_RESET)



typedef struct
{
    uint32_t com :   1;
    uint32_t vdd1 :  1;
    uint32_t vdd2H : 1;
    uint32_t vdd2L : 1;
    uint32_t vddQ :  1;
}PowerInfoType;



extern PowerInfoType g_typePowerInfo;



void vPowerInit(void);
void vPowerOpen(uint32_t uiChannel);
void vPowerClose(uint32_t uiChannel);
PowerInfoType *ptypePowerInfoGet(void);

#endif
